using System;
using System.ComponentModel;
using System.Runtime.Remoting;

namespace MefBasic.Threading
{
    public interface IBackgroundWorker
    {
        void CancelAsync();
        void ReportProgress(int percentProgress);
        void ReportProgress(int percentProgress, object userState);
        void RunWorkerAsync();
        void RunWorkerAsync(object argument);
        bool CancellationPending { get; }
        bool IsBusy { get; }
        bool WorkerReportsProgress { get; set; }
        bool WorkerSupportsCancellation { get; set; }
        ISite Site { get; set; }
        IContainer Container { get; }
        bool IsWorkerBusy { get; set; }
        event DoWorkEventHandler DoWork;
        event ProgressChangedEventHandler ProgressChanged;
        event RunWorkerCompletedEventHandler RunWorkerCompleted;
        void Dispose();
        event EventHandler Disposed;
        object GetLifetimeService();
        object InitializeLifetimeService();
        ObjRef CreateObjRef(Type requestedType);
    }
}